package org.goj.practice.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.goj.common.entity.practice.Contest;
import org.goj.practice.dto.ContestProblemDataDTO;
import org.goj.practice.dto.ContestProblemPersonDTO;
import org.goj.practice.vo.ContestVO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 竞赛表 Mapper 接口
 * </p>
 *
 * @author CK
 * @since 2020-12-02
 */
public interface ContestMapper extends BaseMapper<Contest> {

    /**
     * 添加竞赛
     *
     * @param contest 竞赛实体类
     * @return int
     * @author CK
     * @date 2021/4/20 12:46
     */
    int insertContest(Contest contest);

    /**
     * 用户条件查询竞赛
     *
     * @param page         分页
     * @param queryWrapper 条件
     * @return Page<ContestVO>
     * @author CK
     * @date 2021/4/21 11:57
     */
    Page<ContestVO> pageContest(Page<ContestVO> page, @Param(Constants.WRAPPER) QueryWrapper<ContestVO> queryWrapper);

    /**
     * 查询竞赛排行数据
     *
     * @param contestId 竞赛ID
     * @return List<Map < String, Object>>
     * @author CK
     * @date 2021/4/25 15:37
     */
    List<ContestProblemDataDTO> contestTableData(@Param("contestId") Integer contestId);

    /**
     * 查询单个用户数据
     *
     * @param contestId 竞赛ID
     * @param userId 用户ID
     * @return List<ContestProblemPersonDTO>
     * @author CK
     * @date 2021/4/25 17:27
     */
    List<ContestProblemPersonDTO> contestProblemPerson(@Param("contestId") Integer contestId, @Param("userId") Integer userId);
}
